<?

/**
* @TODO: permitir interagir em uma string, utilizando str_getcsv
*/
class Qi_It_Csv implements Iterator
{
	private $delimitador = ",";
	private $fp = null;
	private $linha = array();
	private $i = 0;

	public $dicionario = array();

	function __construct($arquivo, $delimitador)
	{
		$this->fp = fopen($arquivo, "r");
		$this->delimitador = $delimitador;
		$this->rewind();
	}

	function __destruct()
	{
		fclose($this->fp);
	}

	function rewind()
	{
	    fseek($this->fp, 0);
		$this->_fetch();
	}

	function valid()
	{
	    return $this->linha !== false;
	}

	function current()
	{
		return empty($this->dicionario)
				? $this->linha
				: array_combine($this->dicionario, $this->linha);
	}

	function key()
	{
	    return $this->i;
	}

	function next()
	{
	    $this->_fetch();
		$this->i++;
	}

	private function _fetch()
	{
		$this->linha = fgetcsv($this->fp, 0, $this->delimitador);
	}
}

?>